package org.nokatag.system;

public class Unescape {
	
	public static String unescapestr(String src){
		      StringBuffer tmp = new StringBuffer();
		      tmp.ensureCapacity(src.length());
		      int lastPos = 0, pos = 0, nLen = src.length();
		      char ch;
		      while (lastPos < nLen) {
		         pos = src.indexOf("%", lastPos);
		         if (pos == lastPos) {
		          if (src.charAt(pos + 1) == 'u') {
		           ch = (char) Integer.parseInt(src.substring(pos + 2, pos + 6), 16);
		           tmp.append(ch);
		           lastPos = pos + 6;
		          } else {
		           ch = (char) Integer.parseInt(src.substring(pos + 1, pos + 3), 16);
		           tmp.append(ch);
		          lastPos = pos + 3;
		        }
		      } else {
		       if (pos == -1) {
		         tmp.append(src.substring(lastPos));
		         lastPos = nLen;
		        } else {
		         tmp.append(src.substring(lastPos, pos));
		         lastPos = pos;
		       }
		     }
		    }
		  return tmp.toString();
		 }

}
